package com.example.demo.create.singleton;

/**
 * @Author: zzz
 * @Date: 2021/2/9
 */
public class LazySingleton {

    private static volatile LazySingleton instance = null;    //保证 instance 在所有线程中同步

    //private 避免类在外部被实例化
    private LazySingleton() {
    }

    //getInstance 方法前加同步
    public static synchronized LazySingleton getInstance() {
        if (instance == null) {
            instance = new LazySingleton();
        }
        return instance;
    }


    /*
     * 检查实例，如果不存在，就进入同步区域
     */
    public static LazySingleton getInstance1() {
        if (instance == null) {
            synchronized (LazySingleton.class) {    //进入同步区域
                if (instance == null) {     //在检查一次，如果为null，则创建
                    instance = new LazySingleton();
                }
            }
        }
        return instance;
    }

}